package com.ssy.lingxi.order.model.dto;

import com.ssy.lingxi.order.model.bo.PayNodeBO;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 订单商品及关联的交易流程信息
 * @author 万宁
 * @version 2.0.0
 * @date 2021-09-07
 */
public class SeparateDetailDTO implements Serializable {
    private static final long serialVersionUID = 7638487594320019653L;

    public SeparateDetailDTO() {
    }

    public SeparateDetailDTO(Long vendorMemberId, Long vendorRoleId, Integer fundMode, Integer payChannel, String processKey, Integer processKind, Integer payTimes, Boolean skipFirstStep, Boolean allProducts, Long productId, Long skuId, Boolean hasContract, Long contractId, BigDecimal expireHours, List<PayNodeBO> payNodes) {
        this.vendorMemberId = vendorMemberId;
        this.vendorRoleId = vendorRoleId;
        this.fundMode = fundMode;
        this.payChannel = payChannel;
        this.processKey = processKey;
        this.processKind = processKind;
        this.payTimes = payTimes;
        this.skipFirstStep = skipFirstStep;
        this.allProducts = allProducts;
        this.productId = productId == null ? 0L : productId;
        this.skuId = skuId == null ? 0L : skuId;
        this.hasContract = hasContract;
        this.contractId = contractId == null ? 0L : contractId;
        this.expireHours = expireHours;
        this.payNodes = payNodes;
    }

    /**
     * 供应商会员Id
     */
    private Long vendorMemberId;

    /**
     * 供应商会员角色Id
     */
    private Long vendorRoleId;

    /**
     * 资金归集模式
     */
    private Integer fundMode;

    /**
     * 支付渠道
     */
    private Integer payChannel;

    /**
     * 流程Key
     */
    private String processKey;

    /**
     * 流程类型
     */
    private Integer processKind;

    /**
     * 支付次数
     */
    private Integer payTimes;

    /**
     * 流程启动时，是否执行第一个任务
     */
    private Boolean skipFirstStep;

    /**
     * 是否适用所有商品
     */
    private Boolean allProducts;

    /**
     * 商品Id，如适用所有商品，为0
     */
    private Long productId;

    /**
     * 商品SkuId，如适用所有商品，为0
     */
    private Long skuId;

    /**
     * 是否使用电子合同
     */
    private Boolean hasContract;

    /**
     * 电子合同Id，如不使用合同，为0
     */
    private Long contractId;

    /**
     * 支付环节列表
     */
    private List<PayNodeBO> payNodes;

    /**
     * 订单取消时间
     */
    private BigDecimal expireHours;

    public Long getVendorMemberId() {
        return vendorMemberId;
    }

    public void setVendorMemberId(Long vendorMemberId) {
        this.vendorMemberId = vendorMemberId;
    }

    public Long getVendorRoleId() {
        return vendorRoleId;
    }

    public void setVendorRoleId(Long vendorRoleId) {
        this.vendorRoleId = vendorRoleId;
    }

    public Integer getFundMode() {
        return fundMode;
    }

    public void setFundMode(Integer fundMode) {
        this.fundMode = fundMode;
    }

    public Integer getPayChannel() {
        return payChannel;
    }

    public void setPayChannel(Integer payChannel) {
        this.payChannel = payChannel;
    }

    public String getProcessKey() {
        return processKey;
    }

    public void setProcessKey(String processKey) {
        this.processKey = processKey;
    }

    public Integer getProcessKind() {
        return processKind;
    }

    public void setProcessKind(Integer processKind) {
        this.processKind = processKind;
    }

    public Integer getPayTimes() {
        return payTimes;
    }

    public void setPayTimes(Integer payTimes) {
        this.payTimes = payTimes;
    }

    public Boolean getSkipFirstStep() {
        return skipFirstStep;
    }

    public void setSkipFirstStep(Boolean skipFirstStep) {
        this.skipFirstStep = skipFirstStep;
    }

    public Boolean getAllProducts() {
        return allProducts;
    }

    public void setAllProducts(Boolean allProducts) {
        this.allProducts = allProducts;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getSkuId() {
        return skuId;
    }

    public void setSkuId(Long skuId) {
        this.skuId = skuId;
    }

    public Boolean getHasContract() {
        return hasContract;
    }

    public void setHasContract(Boolean hasContract) {
        this.hasContract = hasContract;
    }

    public Long getContractId() {
        return contractId;
    }

    public void setContractId(Long contractId) {
        this.contractId = contractId;
    }

    public List<PayNodeBO> getPayNodes() {
        return payNodes;
    }

    public void setPayNodes(List<PayNodeBO> payNodes) {
        this.payNodes = payNodes;
    }

    public BigDecimal getExpireHours() {
        return expireHours;
    }

    public void setExpireHours(BigDecimal expireHours) {
        this.expireHours = expireHours;
    }
}
